//
//  AppDelegate.swift
//  yanXiangWeiBo
//
//  Created by 颜祥 on 15/12/15.
//  Copyright © 2015年 yanxiang. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
{
    
    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
    {
        // 设置导航条按钮的颜色
        addNavigationBarColor()
        
        
        // TODO: 加载帐户,能加载到帐户说明用户已经登录了，不能加载到帐户说明用户没有登录
        let userAccount = YXUserAccount.loadUserAccount()
        print("加载帐户:userAccount: \(userAccount)")
        
        // 1.创建window
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        window?.backgroundColor = UIColor.whiteColor()
        // 2.指定根控制器
        let mainVC = YXMainController()
        window?.rootViewController = defaultController()
        
        // 欢迎界面
        //window?.rootViewController = YXWelcomeViewController()
        
        // 新特性
        //window?.rootViewController = YXNewFeatureViewController()
        
        // 授权
        //window?.rootViewController = YXOauthViewController()
        
        
        // 3.显示
        window?.makeKeyAndVisible()
        
        
        return true
    }
    
    // 设置导航条按钮的颜色
    private func addNavigationBarColor()
    {
        UINavigationBar.appearance().tintColor = UIColor.orangeColor()
    }
    
    // 判断程序启动后显示的默认控制器
     private func defaultController() -> UIViewController
    {
        // 如果用户没有登录,就显示登录界面
        if !YXUserAccount.isUserLogin
        {
            return YXMainController()
        }
        
        
        // 如果用户已经登录,判断当前应用程序的版本是否是新版本,如果是新版本,则显示新特新，如果不是新版本,则直接显示欢迎界面
        return isNewVersion() ? YXNewFeatureViewController() : YXWelcomeViewController()
    }
    
    // 判断当前应用程序的版本是否是新版本
    private func isNewVersion() -> Bool
    {
        // 1.获得当前版本
        let currentVersion = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String
        print("当前版本: \(currentVersion)")
        
        // 2.获得上一次保存的版本
        let sandboxVersionKey = "sandboxVersionKey"
        let sandboxVersion = NSUserDefaults.standardUserDefaults().stringForKey(sandboxVersionKey)
        print("沙盒版本: \(sandboxVersion)")
        
        // 3.保存当前版本
        NSUserDefaults.standardUserDefaults().setObject(currentVersion, forKey: sandboxVersionKey)
        // 同步
        NSUserDefaults.standardUserDefaults().synchronize()
        
        // 4.返回是否是新版本
        return currentVersion != sandboxVersion
    }
    
    // 切换控制器,就是切换window的根控制器
    // 谁来赋值切换AppDelegate,切换界面其实就是切换window的跟控制器.window是AppDelegate的一个属性,AppDelegate来负责切换最合适
    /// 切换程序的根控制器, isMain = true 表示切换到MainViewController, isMain = false 表示切换到WelcomeViewController
    func switchRootViewController(isMain: Bool) {
        window?.rootViewController = isMain ? YXMainController() : YXWelcomeViewController()
    }
    
    

}

